package com.mryin.performance.utils;


import java.util.*;

/**
 * @program: PerformanceManager
 * @description: Map集合的value值比较
 * @author: Mr.YIN
 * @create: 2021-03-04 17:34
 **/
public class ValueComparator implements Comparator<Long> {


    Map<String, Double> base;

    public ValueComparator(Map<String, Double> base) {
        this.base = base;
    }

    public int compare(Long a, Long b) {
        if (base.get(a).doubleValue() >= base.get(b).doubleValue()) {
            return -1;
        } else {
            return 1;
        }
    }

    public static <K, V extends Comparable<V>> Map<K, V> sortByValues(
            final Map<K, V> map) {
        Comparator<K> valueComparator = new Comparator<K>() {
            public int compare(K k1, K k2) {
                int compare = map.get(k2).compareTo(map.get(k1));
                if (compare == 0)
                    return 1;
                else
                    return compare;
            }
        };
        Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
        sortedByValues.putAll(map);
        return sortedByValues;
    }



    public static void main(String[] args){
       /* HashMap<String, Double> map = new HashMap<String, Double>();
        map.put(1l, 99.5);
        map.put(2l, 67.2);
        map.put(3l, 67.5);
        map.put(4l, 67.6);

        ValueComparator bvc = new ValueComparator(map);
        TreeMap<Long, Double> sorted_map = new TreeMap<Long, Double>(bvc);

        System.out.println("unsorted map: " + map);

        sorted_map.putAll(map);

        System.out.println("results: " + sorted_map);

        Map<Long, Double> sorted_map2 = sortByValues(map);

        System.out.println("results2: " + sorted_map2);*/

    }
}
